package com.cy.store.service.impl;

import com.cy.store.entity.Address;
import com.cy.store.entity.Product;
import com.cy.store.mapper.AddressMapper;
import com.cy.store.mapper.ProductMapper;
import com.cy.store.service.IAddressService;
import com.cy.store.service.IDistrictService;
import com.cy.store.service.IProductService;
import com.cy.store.service.ex.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;


/**
 * 新增收货地址的实现类
 */
@Service
public class ProductServiceImpl implements IProductService {
    //添加进mapper
    @Autowired
    private ProductMapper productMapper;





    @Override
    public List<Product> findHotList() {
        List<Product> list =  productMapper.findHotList();
        //循环操作
        for (Product product : list) {
            //将一些前端不需要的数据变为null ,减少数据量
            product.setCreatedUser(null);
            product.setCreatedTime(null);
            product.setModifiedUser(null);
            product.setModifiedTime(null);
        }
        return list;
    }

    /**新到好货*/
    @Override
    public List<Product> findNewList() {
        List<Product> list = productMapper.findNewList();
        for (Product product : list) {
            //将一些前端不需要的数据变为null ,减少数据量
            product.setCreatedUser(null);
            product.setCreatedTime(null);
            product.setModifiedUser(null);
            product.setModifiedTime(null);
        }
        return list;
    }

    /**展示全部商品 */
    @Override
    public List<Product> findAllList() {
        List<Product> list = productMapper.findAllList();
        for (Product product : list) {
            //将一些前端不需要的数据变为null ,减少数据量
            product.setItemType(null);
            product.setSellPoint(null);
        }
        return list;
    }

    /**
     * 删除商品
     * @param id
     */
    @Override
    public String deleteById(Integer id) {
        if (productMapper.findById(id) == null){
            throw new ProductNotFoundException("商品不存在");
        }
        String image = productMapper.findImageById(id);
        Integer rows = productMapper.deleteById(id);
        if (rows!=1){
            throw new DeleteException("删除时产生未知的异常");
        }
        System.out.println("删除成功");
        return image;
    }

    @Override
    public Product findById(Integer id) {
        // 根据参数id调用私有方法执行查询，获取商品数据
        Product product = productMapper.findById(id);
        // 判断查询结果是否为null
        if (product == null) {
        // 是：抛出ProductNotFoundException
            throw new ProductNotFoundException("尝试访问的商品数据不存在");
        }
        // 将查询结果中的部分属性设置为null
        product.setPriority(null);
        product.setCreatedUser(null);
        product.setCreatedTime(null);
        product.setModifiedUser(null);
        product.setModifiedTime(null);
        // 返回查询结果
        return product;
    }

    /**用户上传商品信息 */
    @Override
    public void uploadProductByUid(Product product) {
        if (product == null){
            throw new ProductIsEmptyException("上传的商品数据为空");
        }
        Integer rows = productMapper.uploadProductByUid(product);
        if (rows !=1){
            throw new UpdateException("上传时产生未知的异常");
        }
    }


}
